// 4自定义验证规则======================================================
layui.use([ 'form' ], function() {
	var form = layui.form;
	// 如果只校验并且想可以为空 就跳过值为空 否则 value 必填
	/**
	 * 自带的原始验证,默认都会必填，追加填写再验证 required : [ /[\S]+/, "必填项不能为空" ],
	 */
	var regBean = {
		phone : [ /^1\d{10}$/, "请输入正确的手机号" ],
		email : [ /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/, "邮箱格式不正确" ],
		url : [ /(^#)|(^http(s*):\/\/[^\s]+\.[^\s]+)/, "链接格式不正确" ],
		number : function(e) {
			if (!e || isNaN(e))
				return "只能填写数字";
		},
		date : [ /^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/, "日期格式不正确" ],
		identity : [ /(^\d{15}$)|(^\d{17}(x|X|\d)$)/, "请输入正确的身份证号" ]
	}
	// ======================重载=============================================
	form.verify({
		/**
		 * 重载必填 并增加统一的长度校验 默认255 ,
		 */
		required : function(value, item) {
			if (value) { // 值未输入不走这个验证
				var $item = $(item);
				var maxlengths = $item.attr("maxlengths");
				if (!maxlengths) {
					maxlengths = 255;
				}
				if (value.length > maxlengths) {
					return '输入长度不能够大于' + maxlengths;
				}
			} else {
				return "必填项不能够为空！";
			}
		},
		phone:function(value, item) { // value：表单的值、item：表单的DOM对象
			if(value){
				if(!regBean.phone[0].test(value)){
					return regBean.phone[1];
				}
			}
		},
		email:function(value, item) { // value：表单的值、item：表单的DOM对象
			if(value){
				if(!regBean.email[0].test(value)){
					return regBean.email[1];
				}
			}
		},
		url:function(value, item) { // value：表单的值、item：表单的DOM对象
			if(value){
				if(!regBean.url[0].test(value)){
					return regBean.url[1];
				}
			}
		},
		number:function(value, item) { // value：表单的值、item：表单的DOM对象
			if(value){
				return regBean.number;
			}
		},
		date:function(value, item) { // value：表单的值、item：表单的DOM对象
			if(value){
				if(!regBean.date[0].test(value)){
					return regBean.date[1];
				}
			}
		},
		identity:function(value, item) { // value：表单的值、item：表单的DOM对象
			if(value){
				if(!regBean.identity[0].test(value)){
					return regBean.identity[1];
				}
			}
		},
	});
	// ======================自定义验证=============================================
	form.verify({
		reg:function(value, item) {  // 自定义验证，参考 Validform_v5.3.2.js
					/**
					 * 可以绑定的附加属性有：datatype、nullmsg、sucmsg、errormsg、ignore、recheck、tip、altercss、ajaxurl 和 plugin
					 */
					
		},
		eqVlaue : function(value, item) { // value：表单的值、item：表单的DOM对象
			if(value){
				if ($('.boot-eqVlaue').val() != value) {
					return '两次密码不一致';
				}
			}
		},
		/**
		 * 验证json是否合法
		 */
		json : function(value, item) { // value：表单的值、item：表单的DOM对象
			if (value) { // 验证json 先获取对应的json 然后转换成json对象 如果没有错误，就证明是争取的
				try {
					value = $.parseJSON(value);
				} catch (e) {
					console.log(e);
					return '请输入标准json格式 例如：{"name":"测试"}';
				}
			}
		},
		/**
		 * 验证长度是否合法 需要属性 maxlengths 不设置 默认为255
		 */
		maxlengths : function(value, item) { // value：表单的值、item：表单的DOM对象
			if (value) { // 值未输入不走这个验证
				var $item = $(item);
				var maxlengths = $item.attr("maxlengths");
				if (!maxlengths) {
					maxlengths = 255;
				}
				if (value.length > maxlengths) {
					return '输入长度不能够大于' + maxlengths;
				}
			}
		},
		/**
		 * 验证输入的值不能够超过Long 的最大值 9223372036854775807 和小于Long 的最小值
		 * -9223372036854775808 Long 19位长度
		 */
		decimal : function(value, item) {
			if (value) { // 值未输入不走这个验证
				if (value.trim().length == 0) { // 空字符不允许
					return "不能够输入空字符";
				}
				if (isNaN(new Number(value))) { // 必须纯数字
					return "输入值必须是纯数字";
				}
				var longMin = -9223372036854775808;
				var longMax = 9223372036854775807;
				// 判断值是否大于最大值或者小于最小值
				var newValue = new Decimal(value);
				if (newValue > longMax) { // 正数
					return "数字不能大于" + longMin;
				}
				if (newValue < longMin) { // 正数
					return "数字不能小于" + longMax;
				}
			}
		},
		fax : function(value, item) {
			if (value) {
				var myreg = /^(\d{3,4}-)?\d{7,8}$/;
				if (!myreg.test(value)) {
					return '请输入正确的传真';
				}
			}
		},
		qq : function(value, item) {
			if (value) {
				var myreg = /^[1-9]\d{4,9}$/;
				if (!myreg.test(value)) {
					return '请输入正确的QQ';
				}
			}
		},
	});
});